avformat/mov: don't return the latest stream when an item stream is expected
authorJames Almer <jamrial@gmail.com>
Mon, 30 Sep 2024 13:59:02 +0000 (10:59 -0300)
committerSebastian Ramacher <sramacher@debian.org>
Sun, 27 Oct 2024 17:31:51 +0000 (18:31 +0100)
Otherwise, things like ICC profiles as read from the colr box meant for an item
with no stream (like a grid) may end up being added to the wrong stream.

Signed-off-by: James Almer <jamrial@gmail.com>
(cherry picked from commit 04182b55494b44152146e6a6bcd5eb9403f00625)

Gbp-Pq: Name 0001-avformat-mov-don-t-return-the-latest-stream-when-an-.patch

libavformat/mov.c

index a2333ac1fda96c20d079f27ad9a8b20deddd1e92..5b0b23ffc1941b7755491881420b2609992fb159 100644 (file)
@@ -188,6 +188,10 @@ static int mov_read_mac_string(MOVContext *c, AVIOContext *pb, int len,
     return p - dst;
 }
 
+/**
+ * Get the current stream in the parsing process. This can either be the
+ * latest stream added to the context, or the stream referenced by an item.
+ */
 static AVStream *get_curr_st(MOVContext *c)
 {
     AVStream *st = NULL;
@@ -206,7 +210,7 @@ static AVStream *get_curr_st(MOVContext *c)
         st = item->st;
         break;
     }
-    if (!st)
+    if (!st && c->cur_item_id == -1)
         st = c->fc->streams[c->fc->nb_streams-1];
 
     return st;